package com.ysh.aop.advice;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

/**
 * 袁胜虎 on 2022/8/27 20:23
 */
//MethodInterceptor 这是一个环绕通知
public class TranAdvice2 implements MethodInterceptor {
    /**
     * 相当于我们过滤器中的 filter(过滤)方法 自己决定什么时候放行,以及之后干什么事情
     * @param invocation
     * @return
     * @throws Throwable
     */
    @Override
    public Object invoke(MethodInvocation invocation) throws Throwable {
        System.err.println("环绕通知");
        System.err.println("环绕通知");
        System.err.println("环绕通知");
        System.err.println("环绕通知");
        System.err.println("环绕通知");
        System.err.println("开启事务");
        Object proceed = invocation.proceed();//放行并且获取到原始的执行结果
        System.err.println("瞎写的");
        System.err.println("不知道写啥");
        System.err.println("提交事务");
        return proceed;//返回了原始的结果 但是实际上可以自己决定返回什么
    }
}
